package com.example.mediastore.thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class MyThreadPool {


    /**
     * corePoolSize（核心线程数）：线程池中保持的最小线程数，即使线程处于空闲状态也不会被回收。

     * maximumPoolSize（最大线程数）：线程池中允许的最大线程数。

     * keepAliveTime（线程空闲时间）：当线程池中的线程数超过 corePoolSize 并且线程处于空闲状态时，

     * unit（时间单位）：用于指定 keepAliveTime 的时间单位，

     * workQueue（工作队列）：用于存放待执行的任务的阻塞队列。

     * threadFactory（线程工厂）：用于创建新线程的工厂类。

     * handler（拒绝策略）：用于指定当线程池和工作队列都已满时，如何处理新提交的任务。
     */


    private ExecutorService executorService;




    public MyThreadPool() {
        // 创建固定大小为 3 的线程池
        executorService=new ThreadPoolExecutor(3,
                5,
                1L,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(3),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());
    }

    public ExecutorService getExecutorService() {
        return executorService;
    }
}
